Embodiments of the inventive subject matter generally relate to the electrical, electronic, and computer arts, and, more particularly, to the field of composite application or appliance virtualization, still more particularly, embodiments of the inventive subject matter related to a plug-in-based templatization framework for automating the creation of open virtualization framework (OVF) virtual appliance.
Virtualization provides the capability to create a virtual representation of a logical or physical element or device. With the advent of multi-tasking processing elements in computers and other data handling systems, computer system hardware was virtualized to an extent enabling multiple user applications to run concurrently. Subsequently, a computer's supervisor state was virtualized, allowing multiple (and eventually disparate) operating systems (OSs) to be run concurrently in separate “virtual machine” contexts. A virtual machine is a software implementation of data handling system or other machine, created using software emulation, hardware virtualization, or a combination of the two and which presents an interface (e.g., to a user, an application, a communications network, other data handling systems, etc.) of a physical machine implementation. Virtual machines have a number of advantages over conventional physical data handling systems, including the ability to provide multiple OS environments to co-exist on a single physical data handling system, to provide an instruction set architecture (ISA) that differs from that provided by the underlying physical data handling system, as well as enhanced provisioning, maintenance, high availability (HA), backup, and disaster recovery capabilities.
More recently, virtualization has been expanded beyond individual machines or systems to encompass multi-system solutions. Just as physical or hardware “appliances” have been created in recent years to ease the deployment of solutions comprising a number of complex and highly-configurable software products (e.g., web servers, application servers, access control (authentication/authorization) servers, back-end databases, etc.) more recently “virtual appliances” have been created providing similar benefits in the virtualized platform and/or “cloud” context. Virtual Appliances comprise a software stack (operating system, applications, middleware, etc.) designed to run on a virtual machine platform (e.g., a type 1 or type 2 hypervisor). Virtual appliances allow solution providers to customize the execution environment for component applications and virtual machines, customize configuration parameters and manage software and operating system updates. Consequently, although simpler to deploy than conventional bespoke solutions, virtual appliance require extensive knowledge of operating system and software application parameters of their creators.
In an effort to reduce the effort required to manual create and deploy virtual appliances (and virtual machines for that matter) a number of existing techniques have been implemented. Virtual machine/appliance “templates” provide partially constructed virtual elements which may then be further customized or configured in situ. So called “cloning” allows duplicate virtual machines/appliances to be created such that configuration information which is unique to a deployment environment can be overwritten with new information where required. Another recent technique to simplify virtual appliance deployment is the utilization of the Open Virtualization Format (OVF) specification for virtual appliance packaging.
OVF is a virtualization-platform/hypervisor-neutral, extensible and open specification for the packaging and distribution of virtual appliances composed of one or more virtual machines. Much like software package management systems automate the process of installing, upgrading, configuring, and removing software packages from an operating system environment, deployment tools which are compliant with the OVF specification ease VA deployment in the virtualization platform context. While OVF-compliant tools have a number of significant benefits, such tools still require extensive OS environment and application knowledge and labor-intensive manual configuration which frequently leads to configuration errors and unnecessary expense.